
/**
 * 实现防抖函数
 * @param {Function} callback 回调函数
 * @param {Number} time 间隔时间
 * @returns 函数
 */
export function debounce(callback, time) {
  let timeId = null   // 定时器的变量
  // 返回一个函数
  return function(e) {
    // 判断，如果定时器不等于 null，则说明定时器在执行中，所以要清空定时器
    if (timeId !== null) {
      clearTimeout(timeId)      // 清空定时器
    }
    // 启动定时器
    timeId = setTimeout(() => {
      callback.call(this, e)    // 执行回调 
      // 函数执行完毕时重置定时器变量
      // 不然下一次使用的timeId值就是上一次的值，虽然会被上面的判断清空，但是增加了无用的判断
      timeId = null             
    }, time)
  }
}